﻿using System;
using System.Collections.Generic;
using System.Text;
using CeA.Reports.Atendimento.DataAccess.Helpers;

namespace CeA.Reports.Atendimento.DataAccess.Model {
    public class TempoAtendimento {
        private string  m_nomeRfs;
        private string  m_siglaRegiao;
        private string  m_siglaLoja;
        private int     m_senhasRetiradas;
        private int     m_senhasAtendidas;
        private int     m_tempoEspera;
        private int     m_tempoAtendimento;
        private int     m_quantidadeDesistencias;
        private float   m_porcentagemDesistencias;
        private int     m_tempoMaximoAtendimento;
        private int     m_tempoMaximoEspera;
        private int     m_quantidadeTempoEsperaIdeal;

       
        /// <summary>
        /// Initializes a new instance of the <see cref="Tempo"/> class.
        /// </summary>
        public TempoAtendimento() { }


        /// <summary>
        /// Gets or sets the m_nome RFS.
        /// </summary>
        /// <value>The m_nome RFS.</value>
        public string NomeRfs {
            get { return m_nomeRfs; }
            set { m_nomeRfs = value; }
        }


        /// <summary>
        /// Gets or sets the sigla regiao.
        /// </summary>
        /// <value>The sigla regiao.</value>
        public string SiglaRegiao {
            get { return m_siglaRegiao; }
            set { m_siglaRegiao = value; }
        }


        /// <summary>
        /// Gets or sets the sigla loja.
        /// </summary>
        /// <value>The sigla loja.</value>
        public string SiglaLoja {
            get { return m_siglaLoja; }
            set { m_siglaLoja = value; }
        }


        /// <summary>
        /// Gets or sets the senhas retiradas.
        /// </summary>
        /// <value>The senhas retiradas.</value>
        public int SenhasRetiradas {
            get { return m_senhasRetiradas; }
            set { m_senhasRetiradas = value; }
        }


        /// <summary>
        /// Gets or sets the senhas atendidas.
        /// </summary>
        /// <value>The senhas atendidas.</value>
        public int SenhasAtendidas {
            get { return m_senhasAtendidas; }
            set { m_senhasAtendidas = value; }
        }


        /// <summary>
        /// Gets or sets the tempo medio espera.
        /// </summary>
        /// <value>The tempo medio espera.</value>
        public int TempoEspera {
            get { return m_tempoEspera; }
            set { m_tempoEspera = value; }
        }

        /// <summary>
        /// Gets  the tempo medio espera.
        /// </summary>
        /// <value>The tempo medio espera.</value>
        public string TempoEsperaString
        {
            get { return ConvertHelper.SecondToHour(m_tempoEspera); }            
        }


        /// <summary>
        /// Gets or sets the tempo medio atendimento.
        /// </summary>
        /// <value>The tempo medio atendimento.</value>
        public int Tempo {
            get { return m_tempoAtendimento; }
            set { m_tempoAtendimento = value; }
        }

        /// <summary>
        /// Gets the tempo medio atendimento.
        /// </summary>
        /// <value>The tempo medio atendimento.</value>
        public string TempoString
        {
            get { return ConvertHelper.SecondToHour(m_tempoAtendimento); }            
        }

        /// <summary>
        /// Gets or sets the quantidade desistencias.
        /// </summary>
        /// <value>The quantidade desistencias.</value>
        public int QuantidadeDesistencias {
            get { return m_quantidadeDesistencias; }
            set { m_quantidadeDesistencias = value; }
        }


        /// <summary>
        /// Gets or sets the porcentagem desistencias.
        /// </summary>
        /// <value>The porcentagem desistencias.</value>
        public float PorcentagemDesistencias {
            get { return m_porcentagemDesistencias; }
            set { m_porcentagemDesistencias = value; }
        }


        /// <summary>
        /// Gets or sets the tempo maximo atendimento.
        /// </summary>
        /// <value>The tempo maximo atendimento.</value>
        public int TempoMaximoAtendimento {
            get { return m_tempoMaximoAtendimento; }
            set { m_tempoMaximoAtendimento = value; }
        }

        /// <summary>
        /// Gets the tempo maximo atendimento.
        /// </summary>
        /// <value>The tempo maximo atendimento.</value>
        public string TempoMaximoAtendimentoString
        {
            get { return ConvertHelper.SecondToHour(m_tempoMaximoAtendimento); }            
        }

        /// <summary>
        /// Gets or sets the tempo maximo espera.
        /// </summary>
        /// <value>The tempo maximo espera.</value>
        public int TempoMaximoEspera {
            get { return m_tempoMaximoEspera; }
            set { m_tempoMaximoEspera = value; }
        }

        /// <summary>
        /// Gets  the tempo maximo espera.
        /// </summary>
        /// <value>The tempo maximo espera.</value>
        public string TempoMaximoEsperaString
        {
            get { return ConvertHelper.SecondToHour(m_tempoMaximoEspera); }            
        }


        /// <summary>
        /// Gets  the quantidade de atendimento com tempo de espera inferior a 15 minutos.
        /// </summary>
        /// <value>The tempo maximo espera.</value>
        public int QuantidadeTempoEsperaIdeal
        {
            get { return m_quantidadeTempoEsperaIdeal; }
            set { m_quantidadeTempoEsperaIdeal = value; }
        }

        /// <summary>
        /// Gets  the porcentagem de atendimento com tempo de espera inferior a 15 minutos.
        /// </summary>
        /// <value>The tempo maximo espera.</value>
        public String QuantidadeTempoEsperaIdealString
        {
            get {
                return ((m_quantidadeTempoEsperaIdeal / (float)m_senhasAtendidas) * 100).ToString("F");
            }
        }

       

        /// <summary>
        /// Returns a <see cref="System.String"/> that represents this instance.
        /// </summary>
        /// <returns>
        /// A <see cref="System.String"/> that represents this instance.
        /// </returns>
        public override string ToString() {
            StringBuilder str = new StringBuilder();
            str.AppendFormat("m_nomeRfs={0};\n", m_nomeRfs);
            str.AppendFormat("m_siglaRegiao={0};\n", m_siglaRegiao);
            str.AppendFormat("m_siglaLoja={0};\n", m_siglaLoja);
            str.AppendFormat("m_senhasRetiradas={0};\n", m_senhasRetiradas);
            str.AppendFormat("m_senhasAtendidas={0};\n", m_senhasAtendidas);
            str.AppendFormat("m_tempoEspera={0};\n", m_tempoEspera);
            str.AppendFormat("m_tempoAtendimento={0};\n", m_tempoAtendimento);
            str.AppendFormat("m_quantidadeDesistencias={0};\n", m_quantidadeDesistencias);
            str.AppendFormat("m_porcentagemDesistencias={0};\n", m_porcentagemDesistencias);
            str.AppendFormat("m_quantidadeTempoEsperaIdeal={0};\n", m_quantidadeTempoEsperaIdeal);            
            str.AppendFormat("m_tempoMaximoAtendimento={0};\n", m_tempoMaximoAtendimento);
            str.AppendFormat("m_tempoMaximoEspera={0};\n", m_tempoMaximoEspera);
            str.AppendFormat("-----------------------------------------------------------------");

            return str.ToString();
        }

    }
}
